package colecciones.tests;

import static org.junit.Assert.assertEquals;

import org.junit.Before;
import org.junit.Test;

import colecciones.colecciones.MiColeccion;
import colecciones.colecciones.PunteroIncorrectoDeMiColeccionException;


public class IterationTest {
	private MiColeccion<Integer> miColeccion;

	@Before
	public void crearColeccion() {
		this.miColeccion=new MiColeccion<Integer>().add(1).add(2).add(3).add(4).add(5);
	}
	
	@Test
	public void testIrerarConNext() {
		int acum=0;
		Object nro;
		while((nro = this.miColeccion.next()) != null) {
			acum += ((Number)nro).intValue();
		}
		assertEquals("La sumatoria de los n�meros debe ser 15", 15, acum);
	}
	
	@Test
	public void testIterarConPrev() {
		int acum=0;
		Object nro;
		this.miColeccion.setPointerPosition(this.miColeccion.size() - 1);
		while((nro=this.miColeccion.prev())!=null) {
			acum += ((Number) nro).intValue();
		}
		assertEquals("La sumatoria de los n�meros debe ser 15", 15, acum);
	}
	
	@Test(expected=PunteroIncorrectoDeMiColeccionException.class)
	public void testNoSePuedeSetearElPunteroSiEsMayorAlTamanioDeLaColeccion() {
		this.miColeccion.setPointerPosition(21);
	}
	
	@Test(expected=PunteroIncorrectoDeMiColeccionException.class)
	public void testNoSePuedeSetearElPunteroSiEsMenorACero() {
		this.miColeccion.setPointerPosition(-2);
	}
}
